#ifndef __BSP_GPIO_H
#define __BSP_GPIO_H
#include "../imx6ull/imx6ull.h"
#define GPIO_OUTPUT 1
#define GPIO_INPUT  0
void led_init(void);
void led_switch(uint8_t status);
void beep_init(void);
void beep_switch(uint8_t status);
void key_init(void);
int key_read(void);
/*
 * GPIO中断触发类型枚举
 */
typedef enum _gpio_interrupt_mode
{
    kGPIO_NoIntmode = 0U, 				/* 无中断功能 */
    kGPIO_IntLowLevel = 1U, 			/* 低电平触发	*/
    kGPIO_IntHighLevel = 2U, 			/* 高电平触发 */
    kGPIO_IntRisingEdge = 3U, 			/* 上升沿触发	*/
    kGPIO_IntFallingEdge = 4U, 			/* 下降沿触发 */
    kGPIO_IntRisingOrFallingEdge = 5U, 	/* 上升沿和下降沿都触发 */
} gpio_interrupt_mode_t;

void gpio_init(GPIO_Type *BASE,unsigned int pin,unsigned int mode);
void gpio_write(GPIO_Type *BASE,unsigned int pin,unsigned char value);
unsigned int gpio_read(GPIO_Type *BASE,unsigned int pin);

void gpio_intconfig(GPIO_Type* base, unsigned int pin, gpio_interrupt_mode_t pin_int_mode);
void gpio_enableint(GPIO_Type* base, unsigned int pin);
void gpio_disableint(GPIO_Type* base, unsigned int pin);
void gpio_clearintflags(GPIO_Type* base, unsigned int pin);
#endif
